class Solution {
    long prev=Long.MIN_VALUE;//因为最小值可能为int的MIN_VALUE（-2的32次方）这个时候root为最小就弄不了，所以取long的
    public boolean isValidBST(TreeNode root) {
        return dfs(root);
    }
    //其实可以不用再写一个函数dfs，直接用上面的函数递归即可（因为函数头一样）
    public boolean dfs(TreeNode root) {
        //3.递归出口
        if(root==null) {
            return true;
        }
        //2.1左子树
        boolean left = dfs(root.left);

        //2.2cur判断:如果是二叉搜索树的话中序遍历结果为单调增
        boolean cur = true;
        if(root.val<=prev) {
            return false;
        }
        prev = root.val;
        //2.3右子树
        boolean right = dfs(root.right);
        return left&&right;
    }
}